package com.yupi.usercenter.model.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yupi.usercenter.base.model.dto.PageDTO;
import lombok.Data;
import lombok.ToString;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 云路供应链科技有限公司 版权所有 © Copyright 2020
 * <p>
 * 监控工单表 分页查询DTO
 *
 * @author jiweiyu
 * @version 1.0.0
 * @date Created in 2021-03-05
 */
@Data
@ToString
//(value="MonitorWoPageDTO对象", description="监控工单表 分页查询DTO")
public class MonitorWoPageDTO extends PageDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    //("查询类型：1申报管理-网点、2申报管理-代理区、3责任管理-网点、4责任管理-代理区、空表示总部质控")
    private Integer queryType;

    //("监控工单编号")
    private String workOrderCode;

    //("开始日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")    // 处理 JSON 参数
    @NotNull
    private LocalDateTime applyStartTime;

    //("结束日期")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")    // 处理 JSON 参数
    @NotNull
    private LocalDateTime applyEndTime;

    //("问题件一级类型Code")
    private String problemTypeCode;

    //("问题件二级类型Code")
    private String problemTypeSubjectCode;

    //("工单状态 1:待处理  2:待审核  3:已审核  4:已驳回  5:已申诉 6:已结案 ")
    private Integer workOrderStatus;

    //("申报方网点ID")
    private Integer applyNetworkId;

    //("责任方网点ID")
    private Integer respNetworkId;

    private Integer applyProxyId;

    private Integer respProxyId;

    private List<Integer> applyNetworkIdList;

    private List<Integer> respNetworkIdList;

    //("监控维度 1同代理区工单 2 跨代理区工单 3代理区录单 4总部录单")
    @Range(min = 1,max = 5)
    private Integer applyNetworkType;

    /**
     * 1=申报时间 2=完结时间
     */
    @NotNull(message = "时间类型不能为空")
    @Range(min = 1, max = 2, message = "时间类型不正确！")
    private Integer dateType = 1;

    //(value = "包号信息")
    private String packageNumberInfo;

    /** 运单号 */
    private String waybillNo;

    /** 任务单号 */
    private String shipmentNo;
    /**
     * 排序方式 1 desc 2 asc
     */
    private Integer orderbyType = 1;

}
